// ConsoleApplication17.cpp : Defines the entry point for the console application.

/*

Scrivere un programma che carica 20 nomi di volatili, ciascuno di 15 caratteri;
Ordina l'array V in ordine crescente;
Carica una matrice U random contenente le uova di ciascun tipo di femmine di ogni specie;
Visualizza in output V e U;
Visualizza in output il nome di volatile la cui femmina ha deposto più e meno uova;

*/

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>
#include <string.h>
#define NF 20
#define NS 20
#define MAXLEN 15
#define UOVA 5 // A scelta
using namespace std;

void carica_array(char v[][MAXLEN]);
void carica_matrice(int u[][NF]);
void ordina_array(char v[][MAXLEN]);
void visualizza(char v[][MAXLEN], int u[][NF]);
void visualizza_volatile(char v[][MAXLEN], int u[][NF]);

int main()
{
	srand(time(NULL));
	char v[NS][MAXLEN];
	int u[NS][NF];
	carica_array(v);
	carica_matrice(u);
	ordina_array(v);
	visualizza(v, u);
	visualizza_volatile(v, u);
	system("pause");
    return 0;
}

void visualizza(char v[][MAXLEN], int u[][NF])
{
	printf("\n");
	for (int j = 0; j < NS; j++)
	{
		printf("%s\t", v[j]);
	}
	printf("\n\n");
	for (int j = 0; j < NS; j++)
	{
		for (int i = 0; i < NF; i++)
		{
			printf("%d ", u[j][i]);
		}
		printf("\n");
	}
}

void ordina_array(char v[][MAXLEN])
{
	char temp[MAXLEN];
	for (int j = 0; j < NS; j++)
	{
		if (v[j] > v[j + 1])
		{
			strcpy_s(temp, MAXLEN + 1, v[j]);
			strcpy_s(v[j], MAXLEN + 1, v[j+1]);
			strcpy_s(v[j+1], MAXLEN + 1, temp);
		}
	}
}

void carica_array(char v[][MAXLEN])
{
	for (int j = 0; j < NS; j++)
	{
		do
		{
			printf("Inserisci la specie n° %d\n", j + 1);
			cin >> v[j];
		} while ((strlen(v[j]) > MAXLEN));
	}
}

void carica_matrice(int u[][NF])
{
	for (int j = 0; j < NS; j++)
	{
		for (int i = 0; i < NF; i++)
		{
			u[j][i] = rand() % UOVA;
		}
	}
}

void visualizza_volatile(char v[][MAXLEN], int u[][NF])
{
	int sommafem[NF];
	int max = 0;
	int min = UOVA;
	for (int j = 0; j < NF; j++)
	{
		sommafem[j] = 0;
	}
	for (int j = 0; j < NS; j++)
	{
		for (int i = 0; i < NF; i++)
		{
			sommafem[j] = sommafem[j]+u[j][i];
			if (sommafem[j] > max)
			{
				max = j;
			}
			if (sommafem[j] < min)
			{
				min = j;
			}
		}
	}
	printf("La specie che ha deposto più uova è %s e quella che ne ha deposte di meno è %s\n", v[max], v[min]);
}